High reliability content-addressable memory using shadow content-addressable memory

ABSTRACT

The present invention uses a shadow content-addressable memory (CAM) array in parallel with a primary CAM array to increase the reliability of CAM searches. The reliability of CAM searches has been less than desired because of random environmental influences that corrupt data. The shadow CAM is written, read, and searched in parallel with the primary CAM. The search results from the parallel searches are compared and, if identical, are declared valid. If the search results are not equal, corrective action is initiated. The invention may be used with or without priority encoders.

BACKGROUND OF THE INVENTION

[0001] 1. Technical Field

[0002] This invention relates generally to methods for improving thereliability of content-addressable memory (CAM) using shadow CAM. Italso relates more specifically to improving the reliability ofhigh-speed telecommunications switching systems, routers, and databases.Reliability is improved by providing a second array of CAM, referred toas shadow CAM, and writing, reading, and searching both the primary CAMand the shadow CAM in parallel. The results of parallel searches of theprimary and shadow CAMs are compared to see if they are identical. Ifthe results are identical, then the search result is declared valid.Otherwise, corrective action is initiated.

[0003] 2. Background

[0004] When searching computer memory, the item searched for is referredto as a comparand. The comparand may be data or the address for somedata. Computer memory is searched using a comparand to which values inmemory are compared as the search progresses. Content-addressable memory(CAM) is memory which, when searched with a comparand consisting ofdata, returns the address in CAM, if any, where the data of thecomparand can be found. CAM is associative, so addresses of segments ofdata may also be found. CAM is distinct from traditional random accessmemory (RAM). RAM is searched for a comparand that is an address and thesearch returns the data found at that address. CAM is a hardwareimplementation requiring no software.

[0005] CAM is searched for a comparand that is data and CAM returns anaddress of that data. More precisely, the CAM search returns informationabout the physical location (herein after “physical address”) of thedata in the CAM. A device called a priority encoder, often integratedwith the CAM, translates that physical address into a logical addressfor use by a computer. A priority encoder is needed primarily because aCAM search may return more than one result when memory contains morethan one copy of the data. The priority encoder determines which ofthese multiple results has priority. Priority encoders may haveadditional capabilities, as will be discussed below.

[0006] CAM is designed to be searched in parallel: the comparand iscompared to the data at every address simultaneously. Because a searchof CAM does not read or write the data at the searched-for address, andbecause the search is a parallel search, CAM searches are very fast.This makes CAM ideal for search-intensive applications such asdatabases, networking, data compression, cache management,telecommunications switches, routers and image processing. CAMtechnology has been known in the art for over a decade and is shown anddescribed in U.S. Pat. No. 5,034,919 to Sasai (issued Jul. 23, 1991),the disclosure of which is hereby incorporated herein by reference.

[0007] The disadvantage of a CAM search is that, because the data is notread or written during the search, some errors go undetected anduncorrected. For example, if the comparand does not match any datawritten into the CAM, but corrupted data in the CAM does match thecomparand, the search will return the address of the corrupted data. Fora further example, if data otherwise matching the comparand has beencorrupted, the search will return no address. Data corruption in memorycan occur as a result of environmental factors. For example, cosmic rayscan cause bits in memory to change state, thereby corrupting the datathose bits represent. This problem is particularly troublesome forsatellite applications. Electrostatic discharge can also corrupt data.The environmental factors are random. For applications requiring veryhigh reliability, conventional CAM technologies present difficulties.

SUMMARY OF THE INVENTION

[0008] The present invention uses shadow CAM to improve the reliabilityof searching CAM. The shadow CAM is a duplicate of the primary CAM andis read, written, and searched identically to and in parallel with theprimary CAM. After a search is executed, the search results for theprimary and shadow CAM are compared. It is unlikely that randomenvironmental influences would corrupt data in the same place on each oftwo CAM arrays. If the search results are identical, then there is ahigh likelihood that the data is not corrupted. If the search resultsare not identical, then some data is corrupted, and corrective actioncan be initiated.

BRIEF DESCRIPTION OF THE DRAWINGS

[0009] The foregoing and other features and advantages of the inventionwill be apparent from the following more particular description ofspecific embodiments of the invention, as illustrated in theaccompanying drawing, wherein:

[0010]FIG. 1 is a process flow diagram representing an embodiment of thepresent invention;

[0011]FIG. 2 is a process flow diagram representing another embodimentof the present invention;

[0012]FIG. 3 is a block diagram of an embodiment of the apparatus; and

[0013]FIG. 4 is a block diagram of another embodiment of the apparatus.

DESCRIPTION OF EMBODIMENTS OF THE INVENTION

[0014] The process flow 100 of an embodiment of the invention isillustrated in FIG. 1. The first step is to provide a CAM and a shadowCAM 105. Each CAM has the capability to be written to, read from,searched, and to produce an output from a search. Step 105 includesprovision for writing, reading, and searching the primary CAM and theshadow CAM in parallel. By definition, the shadow CAM has an addressspace with a one-to-one mapping to the address space of the primary CAM.That is, for each address in the primary CAM, there is one uniqueaddress in the shadow CAM. In most embodiments, the address space in theshadow CAM has a one-to-one identity mapping to the address space in theprimary CAM. Thus, for each address in the primary CAM, there is oneidentically named address in the shadow CAM. Non-identity mappings arepossible, but require extra steps. For example, an offset mapping suchas (shadow address=primary address+4) requires the writing, reading, andlater, the priority encoding, to calculate the mapping function.

[0015] Prior to any search being carried out, data to be searched mustbe stored 103 in the CAMs. Storage 103 is accomplished by writing thedata in parallel into the primary and shadow CAMs. Writing in parallelcomprises writing to the same addresses in each CAM. The desired andusual result of the parallel writing is to place the data at anavailable address in the primary CAM and at the same address in theshadow CAM. Occasionally, the data will be corrupted in one of the CAMsdue to environmental influences which change stored data bits or damagethe memory. Normally, the storage step places a copy of the input datainto an address in the primary CAM and into the same address in theshadow CAM.

[0016] The search begins with the input of the comparand into the CAMS102. The comparand is the data that will be searched for during thesearch operation. Each CAM has at least one connection for receiving acomparand. In most embodiments, the comparand is provided to the CAMs inparallel. When a CAM receives a comparand comprised of data as itsinput, it performs a search 104, 106 to see if the data of the comparandis stored within the CAM array and, if the data is found within the CAMarray, provide a physical address of the found data as an output. Aphysical address is an indicator of the physical location of the data inthe CAM array. Shadow CAM internal processes are the same as primary CAMinternal processes. Note that there are two levels of parallel activityinvolved in a search. At a first level, the primary and shadow CAMs arebeing searched 104 and 106 in parallel to each other. At a second level,the memory inside each CAM is being searched for the comparand in aparallel manner. That is, every address within each CAM is searched forthe comparand at the same time. When searches 104 and 106 are executedin parallel within the CAMs, identical physical addresses should bereturned by the primary and shadow CAMs. For non-identity mappings, thephysical addresses will be equivalent rather than identical. Equivalentphysical addresses will be translated into identical logical addressesin the priority encoding steps 110 and 112. The physical addressesreturned by the searches 104 and 106 may be the highest priorityphysical addresses containing matching data. In one embodiment, highestpriority may mean the physical address nearest a designated end of a CAMarray. In another embodiment, highest priority may mean the physicaladdress farthest from that same designated end of a CAM array. Thoseskilled in the art will appreciate that other priority schemes may beimplemented. The physical addresses are regarded as the search resultsunless priority encoding is used.

[0017] It is possible to use only part of a CAM array with itsassociated read, write, and search processes. For example, if a portionof a CAM array becomes defective, it can be marked invalid, and theremainder of the CAM may still be used. Using a similar method, a usercan elect to use a particular portion of a primary CAM and to shadowonly that portion with a portion of shadow CAM. In a particularembodiment, at least a portion of the addresses in the primary CAM has aone-to-one mapping to at least an equivalent portion of the addresses inthe shadow CAM. The mapping may be an offset or other function.

[0018] An offset mapping would equate an address in shadow CAM with theaddress in primary CAM plus or minus a fixed offset. The reading,writing, and searching steps act in a parallel manner across anon-identity one-to-one mapping. For a variation of this embodiment,compensation for the mapping function takes place in the priorityencoding steps 110 and 112. For example, in a non-identity mapping ofShadow physical address=Primary physical address+1, data stored 103 atphysical address 0001 (binary) in the primary CAM would also be stored103 at physical address 0010 (binary) in the shadow CAM. In thisexample, the writing step 103 takes the mapping into account whenwriting the data. If the data is ever read from the shadow CAM, themapping would have to be taken into consideration. When a search isconducted for that data, the comparison of the addresses must again takethe mapping into consideration. The mapping may be compensated forduring priority encoding 110 and 112 or in a separate dedicated step. Inthe non-identity mapping example, compensation for the non-identitymapping comprises subtracting one from the shadow physical address.Processes 100 with mappings other than one-to-one identity mappingrequire more steps than processes 100 with one-to-one identity mappingsand so are appropriate in only a limited number of applications wheresequential environmental degradations of the CAM arrays are expected tolimit system life.

[0019] Referring again to FIG. 1, in an embodiment of the invention,priority encoding 110 and 112 is used to translate physical addressesinto logical addresses. Logical addresses allow processes outside of theshadow CAM process 100 to refer to the location of the data in the CAMs.For example, logical addresses can be referred to in software. Priorityencoding 110 and 112 receives physical addresses as inputs and produceslogical addresses as outputs. As discussed above, priority encoding 110and 112 may include compensating for a non-identity mapping in thetranslations from physical addresses to logical addresses.

[0020] The next step 116 is to determine if the addresses are identical.The comparison 116 may be a bitwise comparison. If the data matching thecomparand is uncorrupted, it is most likely that the addresses will beidentical. In that case, a valid search result is reported 114. If theaddresses are not identical, then some data has been corrupted andcorrective action 118 is taken. The corrupted data is not necessarilythe data searched for. For example, data on one CAM array at ahigher-priority address than the searched-for data may have beencorrupted into matching the comparand, rather than data at the correctaddress being corrupted into not matching the comparand. Given a searchresult mismatch, corrective action 118 is taken prior to making anothersearch attempt 102. Corrective action 118 may include rewriting datainto the CAM arrays or marking at least one of the returned addresses asinvalid in both CAM arrays. Note that, for embodiments using aone-to-one identity mapping, an address marked as invalid must be markedinvalid in both CAM arrays. Depending on the flexibility of anon-identity mapping in embodiments using such mappings, it may bepossible to mark an address as invalid in one CAM and change the addressmapping to work around that invalid address. Those skilled in the artwill see that a variety of corrective action options may be used. Forexample, data may be rewritten in larger blocks than the returnedaddresses would normally address. For a further example, the rewritingstrategy may call for rewriting all the data into physical addressesimmediately surrounding the physical addresses containing the corrupteddata, regardless of the logical addresses, against the possibility thatan environmental event has corrupted data within a physical area, ratherthan just at a logical address.

[0021] In another embodiment of the process, as illustrated in FIG. 2,two corrective action steps 216 and 218 are implemented as alternatives.Such an approach may be appropriate where the trusted data source is acommunications channel with limited availability. The process beginswith providing the primary CAM array loaded with data to be searched202. Next, or simultaneously, the shadow CAM array is provided 204, withdata written into it in parallel with the data written into the primaryCAM array 202. Next, the parallel search 206 is conducted. The resultsare compared 208 and, if they are identical, a valid result is reported212. If the results are not identical, the availability of a trusteddata source is determined 214. If such a source exists, the data at eachof the addresses returned by the search is rewritten from the trustedsource 216 into each CAM and the search is repeated 206. Notice that,for a one-to-one identity mapping, the rewrite includes four addresses:each of two addresses in each of two CAMs. If no trusted data source isavailable, at least one address in each CAM is marked as invalid 218 andthe search is repeated 206. Those skilled in the art will see that themismatch logic, as illustrated, is a potentially infinite loop and thoseskilled in the art will include known precautions to prevent infinitelooping.

[0022] An embodiment of the apparatus is illustrated by block diagram inFIG. 3. Each CAM array 304 and 306 has data connections for writing,reading, and searching. The writing connection is used for storing datain the CAM arrays 304 and 306. For writing, the CAMs are connected to atleast one source of data. The connection may be a data bus, as is knownin the art, and that data bus may also be connected to a plurality ofdata sources. The writing connection may also be a direct or integralconnection as are known in the art. In the embodiment of FIG. 3, thewriting connection comprises a parallel connection configured to writethe same data to the same address in each CAM array 304 and 306. Inembodiments using non-identity mappings, the writing connection isconfigured to write the data written in the primary CAM to theequivalent address in the shadow CAM array. The equivalent address isthe one designated by the mapping function. In most embodiments, CAM 304and CAM 306 are written to simultaneously. In practice, “simultaneous”refers to events occurring on the same clock cycle or within a few clockcycles of each other. There is no absolute requirement for simultaneity.

[0023] The reading connection is used to allow other components of acomputer or system to extract copies of data stored in the CAM arrays304 and 306. For reading, the CAMs 304 and 306 are connected to a datasink. “Data sink” is a generic term for a component which uses data readfrom the CAMs 304 and 306. The connection may be a data bus, integral,or direct connection as are known in the art. In the embodiment of FIG.3, the reading connection comprises a parallel connection which reads(ideally) the same data from the same addresses in each CAM array 304and 306. In most embodiments, CAM array 304 and CAM array 306 are readsimultaneously.

[0024] The searching connection is used to input the comparand 302 intothe CAM arrays 304 and 306 and initiate the search. The searchingconnection comprises a parallel connection from the comparand inputsource to the CAM arrays 304 and 306. The comparand input source is thecircuit, component, system or computer using the present invention tostore and retrieve data. Once the comparand 302 has been received by theCAM arrays 304 and 306, the search is carried out in a parallel fashionwithin the CAM array 304 or 306, respectively. In the embodiment shownin FIG. 3, the searching within CAM array 304 and the searching withinCAM array 306 take place simultaneously. In practice, “simultaneously”may comprise a difference of a number of clock cycles or may besimultaneous within the accuracy limit of a system clock or oscillator.When the searches are complete, each CAM array 304 and 306 will produceas output the highest priority physical address 324 or 326 of the datastored in each CAM array 304 and 306, which data matches the data in thecomparand 302. If the data is uncorrupted, both physical addresses 324and 326 will be identical or differ only by a predetermined function.

[0025] Each CAM array 304 and 306 has an output that may be connected toa priority encoder 310 or 312. The priority encoders 310 and 312 receivethe physical addresses 324 and 326 from the CAM arrays 304 or 306 andproduce unique logical addresses 328 and 330 to represent the physicaladdresses 324 and 326, respectively. In embodiments using priorityencoders 310 and 312, logical addresses 328 and 330 are referred tocollectively as the “search results.” In an embodiment, the logicaladdresses 328 and 330 are the highest priority addresses from theirrespective searches. In another embodiment, priority encoders 310 and312 are not used. For example, a shadow CAM device 300 used as atranslation look-aside buffer (TLB) may require no priority encoders 310and 312. In a TLB, the data stored in CAM is itself an address, and theaddress returned from the CAM 300 corresponds to data in another memory(perhaps RAM). Thus, a TLB can be used to translate between virtual andphysical addresses.

[0026] The outputs of the priority encoders 310 and 312 are connected tothe inputs of the comparison circuitry 316. In an embodiment, whencomparison 316 of the search results 328 and 330 does not result in amatch 340, corrective action may be initiated. The comparison circuitry316 has an output connected to the input of the correction logic 318.

[0027] In the event of a mismatch of search results 328 and 330,correction logic 318 accepts the mismatched addresses 328 and 330 asinput, corrects or avoids the problem, and restarts the search for thecomparand 302. For example, data may be rewritten in parallel from atrusted data source into each of the CAM arrays at each of themismatched physical addresses 324 and 326. Rewriting the correct datainto each returned physical address 324 and 326 on each CAM array 304and 306 solves both the corrupted-into-matching and thecorrupted-into-mismatching cases. In another embodiment, a block of datawithin the CAM arrays 304 or 306 may be associated with each possibleaddress 328 and 330 and the data blocks containing the logical addresses328 and 330 may be rewritten within each CAM array 304 and 306. In yetanother embodiment, corrective action may comprise marking at least oneof the mismatched physical addresses 324 and 326 within each of the CAMs304 and 306 as invalid addresses.

[0028] If the comparison circuitry 316 determines that the addresses 328and 330 are identical 342, then the search results 328 and 330 arereported as valid 314 and the address 328 or 330 is sent to the outputof the shadow CAM device 300. In the embodiment of FIG. 3, if nomatching data is found in either CAM, the search results 328 and 330 areidentical null addresses which produce a valid output 314 showing nodata has been found.

[0029] Another embodiment of the apparatus 400 is shown in FIG. 4. FIG.4is numbered using the two least significant digits from similarcomponents in FIG. 3. The reading and writing connections have beenomitted from the drawing of FIG. 4 but are present in the embodiment.The priority encoders 410 and 412 receive the physical addresses 424 and426 and additionally generate a signal to indicate whether a match tocomparand 402 has been found. The finding of a match to the comparand402 in the data of the CAM arrays 404 and 406 is referred to as a “hit”,and the signal indicating a hit is referred to as the “hit signal.” Hitsignals may be single bits of data, making their comparison andprocessing very fast. The circuitry for comparing search results 416 isslower, and need not be used in cases where the search does not producea hit from each CAM array 404 and 406.

[0030] The connections conducting the hit signals from the priorityencoders are connected to a logic circuit 450, which can be as simple asan AND gate, which determines if two hits have occurred. The output ofthe logic circuit 450 is connected to data enable gates 454 and 456. Iftwo hits have occurred, logic circuit 450 outputs a signal to the dataenable gates 454 and 456 which allow transfer of the search results 428and 430 to the comparison circuitry 416. The search results 428 and 430are conducted into the comparison circuitry 416 which determines if thesearch results 428 and 430 are identical to each other and thencomparison circuitry 416 produces an output depending upon the result ofthat determination. If the search results 428 and 430 are identical, thesearch results 428 and 430 are output from the shadow CAM device 400 tothe component receiving valid results 414. If not, the search results428 and 430 are reported to the correction logic 418. If the search doesnot produce two hit signals, the question remains whether the searchproduced one hit or no hits. If two hits are not produced, logiccircuitry 452 (which may be an OR gate) determines if only one hitoccurred. If so, corrective action is initiated by inputting the searchresults 428 and 430 into the correction logic 418. The search result 428or 430 can be sent indirectly through the comparison circuit 416 byenabling the data enable gates 454 and 456. Alternatively, the searchresult 428 or 430 can be sent directly to the correction logic 418. Ifnot even one hit has occurred, then the data of the comparand at theinput 402 is simply not in the CAM arrays 404 or 406 and a valid resultof no matching data is reported to the component receiving outputs ofvalid results of no matching data 460. Those skilled in the art aware ofa variety of logical circuits that can achieve the results of theapparatus.

[0031] The foregoing description has described selected embodiments of ahigh-reliability content-addressable memory using shadowcontent-addressable memory.

[0032] While the invention has been particularly shown and describedwith reference to selected embodiments thereof, it will be readilyunderstood by one of ordinary skill in the art that, as limited only bythe appended claims, various changes in form and details may be madetherein without departing from the spirit and scope of the invention.

We claim:
 1. A method for searching content-addressable memorycomprising: providing a first content-addressable memory having a firstcontent-addressable memory array; providing a second content-addressablememory having a second content-addressable memory array; storing datainto the first and second content-addressable memories; performing asearch for a comparand in the first content-addressable memory to obtaina first address for data matching the comparand; performing the searchfor the comparand in the second content-addressable memory to obtain asecond address for data matching the comparand; comparing the firstaddress with the second address; and validating the search result if thefirst address and the second address are equivalent.
 2. The method ofclaim 1 wherein providing a second content-addressable memory comprisesproviding a content-addressable memory with an address space that has aone-to-one identity mapping to the address space of the firstcontent-addressable memory.
 3. The method of claim 1 further comprisingthe step of taking corrective action if the validation step fails. 4.The method of claim 3 comprising marking as invalid at least one addressfrom a failed validation, the address being marked invalid in at leastone of the first and second arrays of content-addressable memory.
 5. Themethod of claim 3 comprising the step of rewriting data into the firstand second content-addressable memories from a trusted source into eachreturned address that produced a failed validation.
 6. The method ofclaim 3 further comprising the steps of determining the availability ofa trusted source of data for rewriting, rewriting from the trustedsource if it is available, and marking at least one address invalid ifthe trusted source is not available.
 7. The method of claim 1 whereinsearching the first and second arrays for a comparand comprisessearching the first and second arrays of content-addressable memory inparallel.
 8. The method of claim 1 wherein the step of storing data inthe content-addressable memories comprises writing in parallel intoavailable addresses in the first array of content-addressable memory andinto equivalent addresses in the second array of content-addressablememory.
 9. The method of claim 1 wherein the step of obtaining anaddress comprises obtaining a physical address of a highest prioritydata that matches the comparand.
 10. The method of claim 1 furthercomprising the step of providing a priority encoder receiving a firstphysical address from the first content-addressable memory and producinga first logical address corresponding to the first physical address; 11.The method of claim 1 further comprising the step of providing apriority encoder receiving a second physical address from the secondcontent-addressable memory and producing the a second logical addresscorresponding to the second physical address;
 12. The method of claim 1wherein the step of obtaining an address comprises obtaining a logicaladdress of a highest priority data that matches the comparand.
 13. Themethod of claim 1 wherein comparing the array addresses comprises abitwise comparison of the array addresses.
 14. The method of claim 1further comprising, following the step of performing a search to obtaina second address, the additional steps of: a) providing a first priorityencoder receiving a physical address from the first content-addressablememory; b) providing a second priority encoder receiving a physicaladdress from the second content-addressable memory; c) generating a hitsignal from each of the first and second priority encoders to indicatewhen a search has found a match to a comparand in the first and secondcontent-addressable memory, respectively; d) processing the hit signalsfrom both priority encoders to determine if each priority encoder hasfound a match; and e) transmitting the addresses returned as searchresults to the comparison circuitry if both priority encoders indicate amatch;
 15. The method of claim 14 further comprising initiatingcorrective action if only one priority encoder generates a hit signal;16. The method of claim 15 wherein the step of initiating correctiveaction comprises sending the search result to the comparison circuitry.17. The method of claim 15 wherein the step of initiating correctiveaction comprises sending the search result to the correction logic. 18.The method of claim 14 further comprising reporting a valid searchfinding no matches if neither priority encoder generates a hit signal.19. A shadow content-addressable memory apparatus comprising: a firstcontent-addressable memory and a second content-addressable memoryhaving, respectively, a first array of content-addressable memory andsecond array of content-addressable memory configured for writing,reading and searching in the first and second arrays in parallel;comparison circuitry coupled to the first and second CAM and configuredto compare a search result from the first array of content-addressablememory with a search result from a second array of content-addressablememory; and circuitry configured to generate an output responsive to thefirst and second search results to indicate whether the search resultsare equivalent.
 20. The apparatus of claim 19 wherein arrays ofcontent-addressable memory comprise content-addressable memories withaddress spaces having a non-identity one-to-one mapping to each other.